#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include"swap.h"
using namespace std;

////函数:
//	//作用:将一段经常使用的代码封装起来,减少重复代码
//	//（一个较大的程序，一般分为若干个程序块，每个程序块实现特定的功能）
//		//函数的定义:
//		//1、返回值类型
//		//2、函数名
//		//3、参数列表
//		//4、函数体语句
//		//5、return表达式
//		// 返回值类型 函数名（参数列表）
//		// {
//		//    函数体语句
//		//    return表达式
//		// }
//	//定义一个加法函数，功能为传入两个整型数据，计算数据相加的结果并且返回
//	//1、返回值类型 int
//	//2、函数名     add
//	//3、参数列表   （int num1 ， int num2 ， int sum）
//	//4、函数体语句 int sum = num1 + num2
//	//5、return表达式 return sum
//int add(int num1, int num2)//num1和num2并没有实际的数据，它只是一个形式上的参数，简称形参
//{
//	int sum = num1 + num2;
//	return sum;
//	//当调用函数的时候，实参的值会传递给形参
//}

//定义一个实现两个数字进行交换的函数
//如果函数不需要返回值，生命的时候可以写void
//void swap(int num1, int num2)
//{
//	cout << "交换前: " << endl;
//	cout << "num1= "<<num1 << endl;
//	cout << "num2= "<<num2 << endl;
//	int temp = num1;
//	num1 = num2;
//	num2 = temp;
//	cout << "交换后: " << endl;
//	cout << "num1= " << num1 << endl;
//	cout << "num2= " << num2 << endl;
//	//返回值不需要的时候可以不写return
//}

////函数的常见样式:
////1、无参无返
//void test01()
//{
//	cout << "this is test 01" << endl;
//}
//
////2、有参无返
//void test02(int a)
//{
//	cout << "this is test02 a = "<< a << endl;
//}
//
////3、无参有返
//int test03()
//{
//	cout << "this is test03" << endl;
//	return 1000;
//}
//
////4、有参有返
//int test04(int a)
//{
//	cout << "this is test04  a="<<a << endl;
//	return 500;
//}
//
////要在main函数上方声明max函数的存在：
//int max(int a, int b);//声明函数
//int max(int a, int b);//声明可以有多次，但是定义只能有一次


int main()
{
	////函数的调用:
	////功能：使用定义好的函数
	////语法：函数名（参数）
	//int a = 10;//a和b为实际的参数 简称实参
	//int b = 20;
	//int c = add(a, b);//main函数中调用add函数
	//cout << "a=" << a << endl;


	////值传递:
	////就是函数调用的时候实参将数值传递给形参
	//int a = 10;
	//int b = 20;
	//swap(a, b);
	////值传递时如果形参发生改变，并不会影响实参:
	//cout << "a= " << a << endl;//a仍为10
	//cout << "b= " << b << endl;//b仍为20


	////1.无参无返的函数调用:
	//test01();

	////2.有参无返的函数调用:
	//test02(100);

	////3.无参有返的函数调用:
	//int num1 = test03();
	//cout << "num1=" << num1 << endl;

	////4.有参有返的函数调用:
	//int num2 = test04(10000);
	//cout << "num2=" << num2 << endl;


	////函数的声明:
	////作用:告诉编译器函数名称以及如何调用函数，函数的实际主体可以单独定义
	//int a = 10;
	//int b = 20;
	//cout << max(a,b) << endl;


	//函数的分文件编写
	//作用：让代码结构更清晰
	//1、创建后缀名为.h的头文件
	//2、创建后缀名为.cpp的源文件
	//3、在头文件中写函数的声明
	//4、在源文件中写函数的定义
	////测试一下:
	//int a = 10;
	//int b = 20;
	//swap(a, b);








	system("pause");
	return 0;
	}

////提前告诉编译器函数的存在，可以利用函数的声明
//int max(int a, int b)
//{
//	return a > b ? a : b;
//}